package com.stefanie.eventlistenerdemo.common.event;

import com.stefanie.eventlistenerdemo.listener.core.EventListener;

/**
 * @author: stefanie-zy
 * @time: 2024/1/12-14:28
 * @description: 公共-事件广播器[1、负责事件监听器的管理（注册监听器和移除监听器，将事件和监听器关联起来）。2、负责事件的广播（将事件广播给监听器，事件相对应的监听器去处理事件）]
 */
public interface EventMulticaster {

    /**
     * 广播事件给监听器，响应的监听器去处理事件内容
     *
     * @param event 事件
     */
    void multicastEvent(CommonEvent event);

    /**
     * 添加监听器
     *
     * @param eventListener 监听器
     */
    void addEventListener(EventListener<?> eventListener);

    /**
     * 移除监听器
     *
     * @param eventListener 监听器
     */
    void removeEventListener(EventListener<?> eventListener);
}
